import storage from '@/utils/storageWrapper'
import { login,logout } from '@/api/login'
import appConfig from '@/config/appConfig'

const user = {
    state:{
        token: '',
        userName: '', // 真实姓名
        userId: '', // 用户ID
        avatarImgPath: '', // 头像
        allMenuRouteTree: [], // 全部动态 router
        accessList: [], // 用户权限集合
        isAdmin: '', // 是否是超级管理员
        loginUsername: '', // 登录用户名
        state: '', // 用户状态
        sysType: '', // 所属系统
        telphone: '', // 手机号
        sex: '' // 性别
    },
    mutations: {
        SET_TOKEN:(state,token)=>{
            state.token = token
        },
        SET_AVATAR:(state,avatartPath)=>{
            state.avatarImgPath = avatartPath
        },
            // 设置用户信息
        SET_USER_INFO: (state, userInfo) => {
            state.userId = userInfo.sysUserId // 用户ID
            state.userName = userInfo.realname // 真实姓名
            state.avatarImgPath = userInfo.avatarUrl // 头像
            state.accessList = userInfo.entIdList // 权限集合
            state.allMenuRouteTree = userInfo.allMenuRouteTree // 全部路由集合
            state.isAdmin = userInfo.isAdmin // 是否是超级管理员
            state.loginUsername = userInfo.loginUsername // 登录用户名
            state.state = userInfo.state // 用户状态
            state.sysType = userInfo.sysType // 所属系统
            state.telphone = userInfo.telphone // 手机号
            state.sex = userInfo.sex // 性别
        }
    },
    actions: {
        Login({commit},{loginParams,isSaveStorage}){
            return new Promise((resolve,reject)=>{
                login(loginParams)
                .then(res=>{
                    //如果isSaveStorage为true，则把token保存到localStorage
                    storage.setToken(res[appConfig.ACCESS_TOKEN_NAME],isSaveStorage)
                    // 保存到内存中
                    commit('SET_TOKEN',res[appConfig.ACCESS_TOKEN_NAME])
                    resolve()
                })
                .catch(error=>{
                    reject(error)
                })
            })
        },
        // 退出登录
        Logout ({ commit, state }) {
                commit('SET_TOKEN', '')
                storage.cleanToken()
                window.location.reload() // 退出时 重置缓存
        }
    }
}
export default user;